package com.dhz.common.token;

import com.dhz.common.redis.RedisObject;

import java.util.List;

/**
 * Token的数据封装对象.
 * <b>规则：</b>
 * <ul>
 *     <li>{@link #key} 保存的是token值</li>
 *     <li>{@link #region} 服务对应的名称</li>
 *     <li>{@link #value} token对应的值，如userId</li>
 *     <li>{@link #expire} token的有效时间，0表示永久，单位是毫秒</li>
 *     <li>{@link #valPk} 当前服务下抽象出来的唯一标识，请跟据自己的业务决定；如：一个服务每个用户只允许在一个地方登陆，则该valPk</li>
 *     <li>{@link #limit} 与valPk共同确定一个环境下同时可以存在的token数量</li>
 * </ul>
 * @author FY
 */
public class TokenObject extends RedisObject {
    private String valPk;
    private long limit;
    private List<String> valPkList;

    public TokenObject(){}

    /**
     * 每一个Token所必须使用到的参数
     * @param region 服务对应的名称
     * @param value  token作为key对应的值
     * @param expire token的有效时间，0表示永久，单位是毫秒
     * @param valPk  当前服务下抽象出来的唯一标识，请跟据自己的业务决定；如：一个服务每个用户只允许在一个地方登陆，则该valPk
     * @param limit  与valPk共同确定一个环境下同时可以存在的token数量
     */
    public TokenObject(String region, Object value, Integer expire, String valPk, long limit) {
        super(region, null, value, expire);
        this.valPk = valPk;
        this.limit = limit;
    }

    public String getValPk() {
        return valPk;
    }

    public void setValPk(String valPk) {
        this.valPk = valPk;
    }

    public long getLimit() {
        return limit;
    }

    public void setLimit(long limit) {
        this.limit = limit;
    }

    public List<String> getValPkList() {
        return valPkList;
    }

    public void setValPkList(List<String> valPkList) {
        this.valPkList = valPkList;
    }
}
